Machine Learning · PoliMI

Regressione Lineare

Capitolo 3
≈ 65 min di lettura · 14377 parole
Importanza per l'esame: 5/5

★★★★★ Presente in 17 prove su 25: Ridge vs Lasso e regressione bayesiana come domande aperte, gradient descent (discesa del gradiente) e snippet OLS/Ridge/Lasso, numerosi vero/falso.

La regressione lineare è la prima famiglia di metodi di apprendimento supervisionato che si incontra nel corso, e non è una scelta casuale: è il modello più semplice che permette di toccare con mano tutti gli ingredienti visti nel capitolo precedente (hypothesis space (spazio delle ipotesi), loss function (funzione di perdita), ottimizzazione), ammette una soluzione analitica in forma chiusa, e allo stesso tempo è il mattone su cui poggiano tecniche molto più sofisticate, reti neurali comprese. Questo capitolo sviluppa il metodo da quattro angolazioni complementari: la soluzione diretta ai least squares (minimi quadrati), la sua lettura geometrica come proiezione, la lettura probabilistica tramite maximum likelihood (massima verosimiglianza), e infine l’approccio bayesiano completo. Lungo il percorso emergono due temi centrali di tutto il corso: l’overfitting e il suo antidoto, la regolarizzazione. Il capitolo si chiude con gli strumenti pratici per valutare un modello di regressione (indici di errore, R2R^2, test statistici) e con una serie di esercizi svolti in stile esame.

Riferimenti sul testo: Bishop, Pattern Recognition and Machine Learning, capitoli 1 (1.1, 1.2, 1.3) e 3 (3.1, 3.3).

1. Il problema della regressione#

1.1 Obiettivo e ingredienti#

Il punto di partenza è sempre lo stesso: esiste una funzione ignota ff che genera i dati, e l’obiettivo è approssimarla usando solo un insieme finito di osservazioni.

Regressione

Dato un dataset D={(xn,tn)}n=1N\mathcal{D} = \{(x_n, t_n)\}_{n=1}^{N} di coppie input-output generate da una funzione ignota ff, la regressione è il problema di apprendere un’approssimazione di ff che mappa l’input xx in un output continuo tt.

La natura continua del target è ciò che distingue la regressione dalla classificazione, dove il target assume valori in un insieme finito di classi. Esempi tipici: prevedere un prezzo, una temperatura, la larghezza del petalo di un fiore data la sua lunghezza.

Per costruire un algoritmo di regressione servono le tre risposte canoniche dell’apprendimento supervisionato, che qui vengono date in modo esplicito:

La regressione lineare dà una risposta precisa e molto conveniente a tutte e tre le domande.

1.2 Perché partire dai modelli lineari#

Concentrarsi su un modello così semplice non è solo una scelta didattica. I modelli lineari hanno quattro proprietà che li rendono ancora oggi fondamentali:

2. Il modello lineare e le funzioni base#

2.1 Il modello lineare più semplice#

Idea chiave: approssimare ff con una combinazione pesata delle variabili di input più una costante; imparare significa trovare i valori giusti dei pesi.

Con input x=(x1,,xD)\mathbf{x} = (x_1, \dots, x_D) il modello lineare più semplice è

y(x,w)=w0+j=1Dwjxjy(\mathbf{x}, \mathbf{w}) = w_0 + \sum_{j=1}^{D} w_j x_j

dove w0w_0 è il parametro di bias: il termine costante che non moltiplica nessuna variabile e permette alla funzione di non passare per l’origine. Per compattare la notazione conviene aggiungere all’input una componente fittizia sempre uguale a 1, ottenendo x=(1,x1,,xD)\mathbf{x} = (1, x_1, \dots, x_D); a quel punto il modello diventa un semplice prodotto scalare:

y(x,w)=wTxy(\mathbf{x}, \mathbf{w}) = \mathbf{w}^T \mathbf{x}

In parole semplici: il modello è una “media pesata” degli input più una costante di partenza. Nel caso di un solo input è l’equazione di una retta, y=w0+w1xy = w_0 + w_1 x: imparare il modello vuol dire scegliere pendenza e intercetta della retta.

Vale la pena visualizzare l’hypothesis space. Con un solo input le soluzioni candidate sono tutte le rette del piano, e ciascuna retta corrisponde a un punto nello spazio dei pesi (w0,w1)(w_0, w_1): una retta quasi piatta ha w1w_1 vicino a zero, una retta ripida ha w1w_1 grande. Cercare la migliore approssimazione significa cercare il punto migliore in questo spazio dei parametri. Questa è la caratteristica dei metodi parametrici: la forma della soluzione è fissata in anticipo dal progettista, e l’apprendimento si riduce a trovare i valori ottimi di un numero finito di parametri.

2.2 La loss function: somma dei quadrati#

Per confrontare tra loro le candidate soluzioni serve una loss function, e non potendo misurare la distanza dalla vera ff (che è ignota) la si costruisce a partire dai dati. La scelta standard, e molto conveniente, è la somma degli errori quadratici (SSE, sum of squared errors):

L(w)=12n=1N(y(xn,w)tn)2=12n=1Nεn2\mathcal{L}(\mathbf{w}) = \frac{1}{2} \sum_{n=1}^{N} \big( y(\mathbf{x}_n, \mathbf{w}) - t_n \big)^2 = \frac{1}{2} \sum_{n=1}^{N} \varepsilon_n^2

La quantità εn=tny(xn,w)\varepsilon_n = t_n - y(\mathbf{x}_n, \mathbf{w}) è il residuo: l’errore che il modello commette sul punto nn-esimo, cioè la distanza verticale tra il valore osservato tnt_n e il valore predetto sulla retta. La somma dei residui al quadrato si chiama anche RSS (residual sum of squares). Due dettagli della formula:

In parole semplici: per ogni punto del dataset si misura di quanto la predizione manca il bersaglio, si eleva al quadrato (così gli errori non si compensano e quelli grandi pesano di più) e si sommano tutti. Il modello migliore è quello che rende minima questa somma.

Con questa loss, il problema di apprendimento diventa un problema di ottimizzazione ben definito: cercare nello spazio dei pesi il punto che minimizza L(w)\mathcal{L}(\mathbf{w}).

2.3 Linearità nei parametri, non nei dati: le funzioni base#

Una combinazione lineare delle sole variabili di input spesso non basta: se i dati seguono una parabola o una sinusoide, nessuna retta li approssimerà bene. L’osservazione cruciale è però questa: per poter risolvere il problema analiticamente non serve che il modello sia lineare nell’input, serve solo che sia lineare nei pesi.

Idea chiave: trasformare l’input con funzioni non lineari scelte a piacere, e poi imparare un modello lineare nel nuovo spazio trasformato. La retta nel nuovo spazio corrisponde a una curva nello spazio originale.

Un’analogia quotidiana: se una strada in salita è troppo ripida per una bicicletta, non si cambia la bicicletta, si cambia il percorso; qui non si cambia l’algoritmo lineare, si cambia lo spazio in cui lavora. Concretamente, si definiscono MM funzioni base (basis functions) ϕj\phi_j e il modello diventa

y(x,w)=j=0M1wjϕj(x)=wTϕ(x)y(\mathbf{x}, \mathbf{w}) = \sum_{j=0}^{M-1} w_j \, \phi_j(\mathbf{x}) = \mathbf{w}^T \boldsymbol{\phi}(\mathbf{x})

dove per convenzione ϕ0(x)=1\phi_0(\mathbf{x}) = 1 gioca il ruolo del bias.

Funzione base e feature space
  • Funzione base: una trasformazione ϕj(x)\phi_j(\mathbf{x}), anche non lineare e anche costruita combinando più variabili di input, che produce una nuova variabile detta feature.
  • Feature space: il nuovo spazio di input i cui assi sono le feature ϕ1(x),,ϕM1(x)\phi_1(\mathbf{x}), \dots, \phi_{M-1}(\mathbf{x}); il modello è lineare in questo spazio, non necessariamente in quello originale.
spazio originalextt = x²feature spacetiperpiano

Esempio concreto: dati che seguono una parabola nel piano (x,t)(x, t). Si mappa l’input scalare xx nel vettore di feature (1,x,x2)(1, x, x^2) e si impara il modello y=w0+w1x+w2x2y = w_0 + w_1 x + w_2 x^2. Rispetto ai pesi il modello è ancora perfettamente lineare, quindi tutta la matematica dei least squares continua a funzionare identica; ma nel piano originale la funzione appresa è una parabola. Nel feature space bidimensionale (x,x2)(x, x^2) i punti del dataset giacciono attorno a un piano: esiste cioè un’approssimazione lineare nel feature space che corrisponde alla relazione non lineare nello spazio originale. Tipicamente, per rendere efficace il trucco, si passa da uno spazio di input a bassa dimensionalità a un feature space a dimensionalità più alta.

Le funzioni base possono essere qualsiasi cosa: ϕ(x)=x1\phi(\mathbf{x}) = x_1, ϕ(x)=x1x2\phi(\mathbf{x}) = x_1 x_2, ϕ(x)=cos(x1)\phi(\mathbf{x}) = \cos(x_1), e così via. La libertà è totale, perché l’obiettivo è disegnare uno spazio su misura per il problema.

In parole semplici: la regressione “lineare” è lineare solo nei pesi. Se prima di darle i dati li si trasforma (quadrati, prodotti, coseni…), la macchina continua a cercare un iperpiano, ma quell’iperpiano, riportato nello spazio originale, è una curva. Così un metodo semplicissimo modella relazioni complicate.

input xD variabilifeature φj(x)trasformazioni non lineariy = wTφ(x)lineare nei pesi wpredizione youtput continuodataset D = {(xn, tn)}i pesi w minimizzano la RSS

2.4 Famiglie standard di funzioni base#

Il problema pratico è che di solito non si sa quali basi servano. Se i dati sono pochi e in una dimensione, un’occhiata al grafico può suggerire “serve un polinomio di grado 2”; con migliaia di punti in centinaia di dimensioni questo è impossibile. Si ricorre allora a famiglie standard di basi (qui per input scalare):

polinomiali (globali)gaussiane (locali)sigmoidali (a gradino morbido)

2.5 Il prezzo da pagare: la maledizione della dimensionalità#

Se non si sa quali basi usare, la tentazione è “proviamole tutte”. Il costo di questa strategia è un’esplosione del numero di feature. Un esempio: con due variabili x1,x2x_1, x_2, un polinomio completo di grado 2 richiede le feature x1x_1, x2x_2, x1x2x_1 x_2, x12x_1^2, x22x_2^2: da 2 variabili a 5 feature. Aumentando il grado o il numero di variabili, il numero di feature cresce in modo esponenziale. Lo stesso vale per le basi locali: per coprire uniformemente uno spazio con gaussiane, il numero di centri necessari cresce esponenzialmente con la dimensione (una griglia in 1D diventa una griglia quadratica in 2D, cubica in 3D, e così via).

Questo fenomeno si chiama maledizione della dimensionalità (curse of dimensionality) ed è il vero limite dei modelli lineari a basi fisse: se non fosse per questo, non servirebbero tecniche più complesse. Verrà ripreso più avanti nel corso da un punto di vista teorico, e i metodi kernel offriranno una via d’uscita.

3. La soluzione diretta: ordinary least squares (OLS)#

3.1 Forma matriciale della loss#

Idea chiave: riscrivendo la loss in forma matriciale, la sua minimizzazione diventa un esercizio di calcolo con una soluzione esplicita: le equazioni normali.

Si raccolgono i dati in due oggetti:

Il prodotto Φw\boldsymbol{\Phi}\mathbf{w} è allora il vettore di tutte le predizioni del modello sui punti del dataset (ogni riga per il vettore dei pesi dà una predizione), e tΦw\mathbf{t} - \boldsymbol{\Phi}\mathbf{w} è il vettore di tutti i residui. La RSS è la norma al quadrato di questo vettore:

L(w)=12(tΦw)T(tΦw)\mathcal{L}(\mathbf{w}) = \frac{1}{2} (\mathbf{t} - \boldsymbol{\Phi}\mathbf{w})^T (\mathbf{t} - \boldsymbol{\Phi}\mathbf{w})

Chi non è convinto dell’equivalenza può verificarla a mano con numeri piccoli, per esempio N=3N = 3 campioni e M=2M = 2 feature: moltiplicando il vettore dei residui trasposto per sé stesso si ottiene esattamente la somma dei quadrati dei residui.

3.2 Derivazione della soluzione in forma chiusa#

Per minimizzare una funzione si annulla la derivata prima e si controlla la derivata seconda. Qui la variabile è un vettore, quindi la “derivata prima” è il gradiente e la “derivata seconda” è la matrice hessiana delle derivate parziali seconde. Applicando la regola della catena alla forma quadratica (derivata del quadrato per derivata dell’argomento interno, con le trasposizioni imposte dal calcolo matriciale):

L(w)w=ΦT(tΦw),2L(w)wwT=ΦTΦ\frac{\partial \mathcal{L}(\mathbf{w})}{\partial \mathbf{w}} = -\boldsymbol{\Phi}^T (\mathbf{t} - \boldsymbol{\Phi}\mathbf{w}), \qquad \frac{\partial^2 \mathcal{L}(\mathbf{w})}{\partial \mathbf{w} \, \partial \mathbf{w}^T} = \boldsymbol{\Phi}^T \boldsymbol{\Phi}

La derivazione estesa, passaggio per passaggio

Ci sono due strade per arrivare a queste due formule. La prima è meccanica e non richiede di ricordare nulla oltre a due identità; la seconda è più rapida ma va tenuta a mente.

Via 1: espandere e usare le identità del calcolo matriciale. Si sviluppa il prodotto:

L(w)=12(tTttTΦwwTΦTt+wTΦTΦw)\mathcal{L}(\mathbf{w}) = \tfrac{1}{2}\left(\mathbf{t}^T\mathbf{t} - \mathbf{t}^T\boldsymbol{\Phi}\mathbf{w} - \mathbf{w}^T\boldsymbol{\Phi}^T\mathbf{t} + \mathbf{w}^T\boldsymbol{\Phi}^T\boldsymbol{\Phi}\mathbf{w}\right)

Il passaggio che sblocca tutto: i due termini centrali sono scalari (1×11 \times 1), e uno scalare è uguale alla propria trasposta, quindi tTΦw=wTΦTt\mathbf{t}^T\boldsymbol{\Phi}\mathbf{w} = \mathbf{w}^T\boldsymbol{\Phi}^T\mathbf{t}. I due si fondono in uno solo:

L(w)=12(tTt2wTΦTt+wTΦTΦw)\mathcal{L}(\mathbf{w}) = \tfrac{1}{2}\left(\mathbf{t}^T\mathbf{t} - 2\,\mathbf{w}^T\boldsymbol{\Phi}^T\mathbf{t} + \mathbf{w}^T\boldsymbol{\Phi}^T\boldsymbol{\Phi}\mathbf{w}\right)

A questo punto servono solo due identità standard:

Identità Condizione di validità
(aTw)w=a\dfrac{\partial\, (\mathbf{a}^T\mathbf{w})}{\partial \mathbf{w}} = \mathbf{a} a\mathbf{a} non dipende da w\mathbf{w}
(wTAw)w=(A+AT)w=2Aw\dfrac{\partial\, (\mathbf{w}^T\mathbf{A}\mathbf{w})}{\partial \mathbf{w}} = (\mathbf{A} + \mathbf{A}^T)\mathbf{w} = 2\mathbf{A}\mathbf{w} l’ultima uguaglianza solo se A\mathbf{A} è simmetrica

Qui A=ΦTΦ\mathbf{A} = \boldsymbol{\Phi}^T\boldsymbol{\Phi} è simmetrica per costruzione, dato che (ΦTΦ)T=ΦTΦ(\boldsymbol{\Phi}^T\boldsymbol{\Phi})^T = \boldsymbol{\Phi}^T\boldsymbol{\Phi}, quindi vale la forma 2Aw2\mathbf{A}\mathbf{w}. Il termine tTt\mathbf{t}^T\mathbf{t} è costante in w\mathbf{w} e sparisce:

Lw=12(2ΦTt+2ΦTΦw)=ΦTΦwΦTt=ΦT(tΦw)\frac{\partial \mathcal{L}}{\partial \mathbf{w}} = \tfrac{1}{2}\left(-2\boldsymbol{\Phi}^T\mathbf{t} + 2\boldsymbol{\Phi}^T\boldsymbol{\Phi}\mathbf{w}\right) = \boldsymbol{\Phi}^T\boldsymbol{\Phi}\mathbf{w} - \boldsymbol{\Phi}^T\mathbf{t} = -\boldsymbol{\Phi}^T(\mathbf{t} - \boldsymbol{\Phi}\mathbf{w})

Ecco a cosa serve l’12\frac{1}{2} davanti alla loss: cancella esattamente il 22 che esce dalla derivata del quadrato. Non cambia il punto di minimo, essendo una costante moltiplicativa positiva, ed è solo cosmetica.

L’hessiana si ottiene derivando di nuovo. Il gradiente è ormai lineare in w\mathbf{w}, nella forma Awb\mathbf{A}\mathbf{w} - \mathbf{b}, quindi la seconda derivata è banale:

2LwwT=wT(ΦTΦwΦTt)=ΦTΦ\frac{\partial^2 \mathcal{L}}{\partial \mathbf{w}\,\partial \mathbf{w}^T} = \frac{\partial}{\partial \mathbf{w}^T}\left(\boldsymbol{\Phi}^T\boldsymbol{\Phi}\mathbf{w} - \boldsymbol{\Phi}^T\mathbf{t}\right) = \boldsymbol{\Phi}^T\boldsymbol{\Phi}

Costante, non dipende da w\mathbf{w}: è la firma di una funzione quadratica.

Via 2: la regola della catena, quella citata sopra. Si pone r(w)=tΦw\mathbf{r}(\mathbf{w}) = \mathbf{t} - \boldsymbol{\Phi}\mathbf{w}, il vettore dei residui, così che L=12rTr\mathcal{L} = \frac{1}{2}\mathbf{r}^T\mathbf{r}. Allora

Lr=r,rw=Φ\frac{\partial \mathcal{L}}{\partial \mathbf{r}} = \mathbf{r}, \qquad \frac{\partial \mathbf{r}}{\partial \mathbf{w}} = -\boldsymbol{\Phi}

e la catena in forma matriciale è wL=(rw)TLr=ΦTr=ΦT(tΦw)\nabla_\mathbf{w}\mathcal{L} = \left(\frac{\partial \mathbf{r}}{\partial \mathbf{w}}\right)^T \frac{\partial \mathcal{L}}{\partial \mathbf{r}} = -\boldsymbol{\Phi}^T\mathbf{r} = -\boldsymbol{\Phi}^T(\mathbf{t} - \boldsymbol{\Phi}\mathbf{w}).

È più veloce, ma la trasposizione va ricordata a memoria. Il controllo dimensionale la giustifica: Φ\boldsymbol{\Phi} è N×MN \times M e r\mathbf{r} è N×1N \times 1; l’unico modo di combinarle ottenendo un M×1M \times 1, cioè la stessa forma di w\mathbf{w} come dev’essere per un gradiente, è ΦTr\boldsymbol{\Phi}^T\mathbf{r}. All’esame, il controllo dimensionale è il modo più rapido per verificare di non aver sbagliato una trasposta.

L’hessiana ΦTΦ\boldsymbol{\Phi}^T \boldsymbol{\Phi} è semidefinita positiva, e la ragione è che si tratta di una matrice di Gram: per ogni vRM\mathbf{v} \in \mathbb{R}^M

vT(ΦTΦ)v=(Φv)T(Φv)=Φv20\mathbf{v}^T (\boldsymbol{\Phi}^T \boldsymbol{\Phi}) \mathbf{v} = (\boldsymbol{\Phi}\mathbf{v})^T (\boldsymbol{\Phi}\mathbf{v}) = \lVert \boldsymbol{\Phi}\mathbf{v} \rVert^2 \geq 0

cioè una norma al quadrato, che non può essere negativa. Ne segue che la loss è convessa e ogni punto a gradiente nullo è un minimo globale. La disuguaglianza è stretta, e quindi l’hessiana definita positiva con minimo unico, se e solo se Φv0\boldsymbol{\Phi}\mathbf{v} \neq \mathbf{0} per ogni v0\mathbf{v} \neq \mathbf{0}: cioè se Φ\boldsymbol{\Phi} ha rango pieno per colonne. Rango pieno, hessiana definita positiva, invertibilità di ΦTΦ\boldsymbol{\Phi}^T\boldsymbol{\Phi} e unicità della soluzione sono la stessa condizione vista da quattro lati, e il paragrafo successivo esamina cosa accade quando cade. Annullando il gradiente:

ΦTΦw=ΦTt\boldsymbol{\Phi}^T \boldsymbol{\Phi} \, \mathbf{w} = \boldsymbol{\Phi}^T \mathbf{t}

Queste sono le cosiddette equazioni normali. Se ΦTΦ\boldsymbol{\Phi}^T \boldsymbol{\Phi} è invertibile, la soluzione è unica ed esplicita.

Soluzione dei ordinary least squares (OLS), OLS

Se ΦTΦ\boldsymbol{\Phi}^T \boldsymbol{\Phi} è non singolare, il minimo globale della RSS è

w^OLS=(ΦTΦ)1ΦTt\hat{\mathbf{w}}_{OLS} = (\boldsymbol{\Phi}^T \boldsymbol{\Phi})^{-1} \boldsymbol{\Phi}^T \mathbf{t}

In parole semplici: tutta la fase di “apprendimento” della regressione lineare si riduce a una formula: si costruisce la matrice delle feature, si fanno due moltiplicazioni e un’inversione di matrice, e i pesi ottimi escono in un colpo solo. Niente iterazioni, niente rischio di fermarsi in una soluzione mediocre: la formula dà sempre il minimo assoluto della loss.

3.3 Costo computazionale e problemi di invertibilità#

La forma chiusa ha solo due punti deboli.

Il primo problema si risolve con i metodi iterativi (sezione 6), il secondo con la regolarizzazione ridge (sezione 8.2), che ha come bonus la garanzia di invertibilità.

4. Lettura geometrica: OLS come proiezione ortogonale#

Idea chiave: visto come vettore in uno spazio a NN dimensioni, il vettore delle predizioni è vincolato a vivere nel sottospazio generato dalle colonne di Φ\boldsymbol{\Phi}; l’OLS sceglie, dentro quel sottospazio, il punto più vicino al vettore dei target, cioè la sua proiezione ortogonale.

Si cambia prospettiva: invece di guardare i dati punto per punto, si guarda il dataset intero come un unico vettore. Il vettore dei target t\mathbf{t} vive in RN\mathbb{R}^N, uno spazio con una dimensione per ogni campione. Sia φj\varphi_j la jj-esima colonna di Φ\boldsymbol{\Phi} (cioè i valori della feature jj su tutti i campioni): le colonne φ1,,φM\varphi_1, \dots, \varphi_M generano un sottospazio lineare SRN\mathcal{S} \subseteq \mathbb{R}^N di dimensione MM.

Il vettore delle predizioni t^=Φw\hat{\mathbf{t}} = \boldsymbol{\Phi}\mathbf{w} è per costruzione una combinazione lineare delle colonne (la prima colonna pesata con w0w_0, la seconda con w1w_1, e così via), quindi qualunque sia w\mathbf{w}, il vettore t^\hat{\mathbf{t}} giace dentro S\mathcal{S}. L’OLS minimizza la distanza quadratica tt^2\lVert \mathbf{t} - \hat{\mathbf{t}} \rVert^2, e il punto di un sottospazio più vicino a un vettore esterno è la sua proiezione ortogonale: dunque t^\hat{\mathbf{t}} è la proiezione ortogonale di t\mathbf{t} su S\mathcal{S}.

Un esempio piccolo aiuta a visualizzare: N=3N = 3 campioni e M=2M = 2 feature (per esempio la colonna di tutti 1 del bias e una variabile). Il target è una freccia nello spazio 3D; le due colonne di Φ\boldsymbol{\Phi} sono due frecce che individuano un piano; tutte le possibili uscite del modello stanno su quel piano; l’OLS pianta il piede della perpendicolare calata da t\mathbf{t} sul piano, e quel punto è t^\hat{\mathbf{t}}. In generale NN è enorme e il piano diventa un sottospazio MM-dimensionale, ma l’idea è identica.

Esempio geometrico dell’OLS. Con N = 3 campioni e M = 2 feature, le due colonne di \boldsymbol{\Phi}, cioè \varphi_1 = (1, 1, 1) e \varphi_2 = (2, -2, 2), generano il piano (in verde) delle predizioni producibili. Il target \mathbf{t} = (5, 1, 2) giace fuori dal piano; l’OLS lo proietta nel punto più vicino \hat{\mathbf{t}} = (3.5, 1, 3.5), e il residuo \mathbf{t} - \hat{\mathbf{t}} è perpendicolare al piano. (Ricostruzione della slide del corso.)

Sostituendo la soluzione OLS nell’espressione delle predizioni si ottiene la forma esplicita della proiezione:

t^=Φw^OLS=Φ(ΦTΦ)1ΦTHt=Ht\hat{\mathbf{t}} = \boldsymbol{\Phi} \hat{\mathbf{w}}_{OLS} = \underbrace{\boldsymbol{\Phi} (\boldsymbol{\Phi}^T \boldsymbol{\Phi})^{-1} \boldsymbol{\Phi}^T}_{\mathbf{H}} \, \mathbf{t} = \mathbf{H}\,\mathbf{t}

La matrice H\mathbf{H}, detta hat matrix (perché “mette il cappello” a t\mathbf{t}), è la trasformazione geometrica che proietta il vettore dei target sul sottospazio delle feature.

In parole semplici: il modello non può produrre qualunque insieme di predizioni: può produrre solo quelle raggiungibili combinando le sue feature. L’OLS prende le risposte vere e le “schiaccia” sul sottospazio delle risposte producibili, nel modo che perde meno informazione possibile in senso quadratico. L’unica leva di progetto è la scelta delle feature: cambiare le feature cambia il sottospazio, e quindi cambia la proiezione.

5. Output multipli#

Che succede se il target non è uno scalare ma un vettore, cioè se per ogni input vanno predetti KK valori? In linea di principio si possono risolvere KK problemi di regressione completamente indipendenti, uno per componente: nella regressione lineare non c’è alcuna dipendenza tra il modo in cui si calcolano le diverse componenti dell’output, perché ognuna ha i propri pesi.

Se però si usa lo stesso insieme di funzioni base per tutti gli output, conviene risolverli insieme. Raccogliendo i target in una matrice T\mathbf{T} (una colonna per output) e i pesi in una matrice W^\hat{\mathbf{W}} (una colonna di pesi per output), la soluzione è

W^=(ΦTΦ)1ΦTT\hat{\mathbf{W}} = (\boldsymbol{\Phi}^T \boldsymbol{\Phi})^{-1} \boldsymbol{\Phi}^T \mathbf{T}

che si disaccoppia esattamente, per ogni output kk, in w^k=(ΦTΦ)1ΦTtk\hat{\mathbf{w}}_k = (\boldsymbol{\Phi}^T \boldsymbol{\Phi})^{-1} \boldsymbol{\Phi}^T \mathbf{t}_k.

In parole semplici: i problemi restano indipendenti, ma condividono il pezzo di calcolo più costoso, la matrice (ΦTΦ)1(\boldsymbol{\Phi}^T \boldsymbol{\Phi})^{-1}, che dipende solo dagli input: la si calcola una volta sola e la si riusa per tutti gli output. Stesso risultato, molto meno lavoro.

6. Metodi iterativi: gradient descent e apprendimento sequenziale#

Quando il dataset è troppo grande per la forma chiusa, si abbandona la soluzione “in un colpo solo” e si procede per aggiustamenti successivi.

Idea chiave: partire da pesi qualsiasi e correggerli ripetutamente muovendosi in discesa lungo la superficie della loss, come una pallina che rotola verso il fondo di una conca; siccome la loss è convessa, il fondo è unico.

Il gradient descent calcola in ogni punto il gradiente della loss, che indica la direzione di massima crescita, e muove i pesi nella direzione opposta. Nella versione batch il gradiente si calcola sull’intera loss, cioè su tutti gli NN campioni a ogni passo; riusando il gradiente ricavato in 3.2, l’aggiornamento è

w(k+1)=w(k)α(k)L(w(k))=w(k)+α(k)ΦT(tΦw(k))=w(k)+α(k)n=1N(tnw(k)Tϕ(xn))ϕ(xn)\mathbf{w}^{(k+1)} = \mathbf{w}^{(k)} - \alpha^{(k)} \nabla \mathcal{L}(\mathbf{w}^{(k)}) = \mathbf{w}^{(k)} + \alpha^{(k)} \boldsymbol{\Phi}^T \big( \mathbf{t} - \boldsymbol{\Phi}\mathbf{w}^{(k)} \big) = \mathbf{w}^{(k)} + \alpha^{(k)} \sum_{n=1}^{N} \big( t_n - \mathbf{w}^{(k)T} \boldsymbol{\phi}(\mathbf{x}_n) \big) \, \boldsymbol{\phi}(\mathbf{x}_n)

Ogni singolo passo costa dunque quanto una scansione completa del dataset, il che rende la batch precisa ma costosa. La variante usata in pratica è il gradient descent stocastica (SGD, detta anche apprendimento sequenziale o online): a ogni passo si usa il gradiente calcolato su un solo campione, che è un’approssimazione rumorosa ma non distorta del gradiente vero, e che comunque garantisce convergenza sotto opportune condizioni. Per la regressione lineare con loss quadratica l’algoritmo risultante prende il nome di Least Mean Squares (LMS):

w(k+1)=w(k)α(k)Ln(w(k))=w(k)+α(k)(tnw(k)Tϕ(xn))ϕ(xn)\mathbf{w}^{(k+1)} = \mathbf{w}^{(k)} - \alpha^{(k)} \nabla \mathcal{L}_n(\mathbf{w}^{(k)}) = \mathbf{w}^{(k)} + \alpha^{(k)} \big( t_n - \mathbf{w}^{(k)T} \boldsymbol{\phi}(\mathbf{x}_n) \big) \, \boldsymbol{\phi}(\mathbf{x}_n)

dove Ln\mathcal{L}_n è la loss sul solo campione nn. Il parametro α\alpha si chiama learning rate e regola l’ampiezza dei passi; deve decrescere nel tempo, all’inizio passi ampi per avvicinarsi rapidamente, poi passi sempre più piccoli per non scavalcare il minimo. Le condizioni classiche che garantiscono la convergenza sono

k=0α(k)=+,k=0(α(k))2<+\sum_{k=0}^{\infty} \alpha^{(k)} = +\infty, \qquad \sum_{k=0}^{\infty} \big( \alpha^{(k)} \big)^2 < +\infty

la prima assicura che i passi complessivi bastino a raggiungere qualunque punto, la seconda che il rumore dei singoli campioni si smorzi.

Il confronto tra le due formule di aggiornamento è immediato: sono identiche a meno della sommatoria. La batch somma il contributo di tutti gli NN campioni prima di muovere i pesi, la stocastica ne usa uno solo. È questo che rende la SGD un’approssimazione non distorta: a meno del fattore NN, il termine relativo a un campione estratto a caso ha come valore atteso il gradiente completo, quindi in media i due metodi si muovono nella stessa direzione, ma la SGD lo fa con un passo che costa NN volte meno e in cambio zig-zaga. Tra i due estremi esiste una via di mezzo, il mini-batch, che calcola il gradiente su un sottoinsieme di campioni per volta: è la scelta standard nell’addestramento delle reti neurali, dove combina la stabilità della batch con il costo contenuto della stocastica.

Loss batch e aggiornamento stocastico: attenzione al testo d'esame

I temi d’esame non sono sempre coerenti su questo punto. Un esercizio propone una loss dichiaratamente batch, con tanto di normalizzazione 1N\frac{1}{N} e termine di regolarizzazione,

J(w)=12Nn=1N(wTxntn)2+λ2wTwJ(\mathbf{w}) = \frac{1}{2N} \sum_{n=1}^{N} \big( \mathbf{w}^T \mathbf{x}_n - t_n \big)^2 + \frac{\lambda}{2} \mathbf{w}^T \mathbf{w}

e chiede di derivarne l’update del gradient descent; la soluzione ufficiale applica però un aggiornamento su un solo campione, wj(1)=wj(0)α[(x1Tw(0)t1)x1j+λwj(0)]w_j^{(1)} = w_j^{(0)} - \alpha [ (\mathbf{x}_1^T \mathbf{w}^{(0)} - t_1) x_{1j} + \lambda w_j^{(0)} ], ignorando sia la sommatoria sia il fattore 1N\frac{1}{N}. Di fronte a un testo ambiguo la mossa sicura è scrivere entrambe le forme e dichiarare esplicitamente quale si sta usando: il ragionamento resta corretto in entrambi i casi, e la scelta viene esplicitata invece che subita.

w1w2minimo globale ŵw(0)passi ampi all'inizio, poi sempre più corti (learning rate decrescente)

In parole semplici: invece di risolvere l’equazione tutta insieme, si guarda un esempio alla volta: se il modello ha predetto troppo poco per quell’esempio si alzano un po’ i pesi delle feature attive, se ha predetto troppo li si abbassa. Ripetendo su tanti esempi con correzioni sempre più caute, i pesi convergono alla stessa soluzione dell’OLS.

7. Il problema dell’overfitting#

7.1 Complessità del modello e qualità dell’approssimazione#

Le funzioni base sembrano un pranzo gratis: più feature si aggiungono, più il modello diventa flessibile. Un esperimento con dati generati da una funzione sinusoidale (più rumore) mostra dove sta la trappola. Si prova ad approssimare gli stessi punti con polinomi di grado crescente:

Overfitting con un polinomio di grado 9. La curva rossa passa quasi esattamente per ogni punto del dataset ma oscilla selvaggiamente tra un punto e l’altro, allontanandosi dalla sinusoide vera (in verde) che ha generato i dati: errore quasi nullo sul training set, pessima generalizzazione. (Slide del corso.)
Underfitting e overfitting
  • Underfitting: il modello è troppo semplice per catturare la relazione tra input e target; l’errore è alto già sui dati di training.
  • Overfitting: il modello si adatta così fedelmente ai punti del training set (rumore compreso) da perdere la capacità di approssimare la vera funzione generatrice; errore bassissimo sui dati visti, pessimo sul resto.

In parole semplici: un modello troppo potente impara i dati “a memoria” invece di impararne la regola, come uno studente che memorizza le soluzioni degli esercizi svolti senza capire il metodo: perfetto sugli esercizi già visti, perso davanti a un esercizio nuovo. L’obiettivo dell’apprendimento non è azzerare l’errore sui dati, è generalizzare.

complessità del modello (per esempio il grado M del polinomio)errorecomplessità ottimaleerrore di trainingerrore su dati nuoviunderfittingoverfitting

7.2 Il sintomo: pesi che esplodono#

Osservando i pesi appresi al crescere del grado del polinomio si nota un fenomeno rivelatore: le componenti del vettore dei pesi diventano enormi in valore assoluto. Il motivo è intuitivo: per passare esattamente per ogni punto, la curva deve cambiare valore in modo drastico e rapidissimo tra un punto e il successivo, e variazioni così brusche si ottengono solo con coefficienti molto grandi che si compensano a vicenda. Pesi grandi sono quindi la firma numerica dell’overfitting nei modelli lineari, ed è proprio su questo sintomo che agisce la regolarizzazione.

8. Regolarizzazione#

8.1 L’idea generale#

Idea chiave: aggiungere alla loss function una penalità che rende “costose” le soluzioni con pesi grandi, così l’ottimizzazione è spinta verso modelli più lisci; un coefficiente λ\lambda dosa il compromesso tra fedeltà ai dati e semplicità.

La loss viene estesa in

L(w)=LD(w)+λLW(w)\mathcal{L}(\mathbf{w}) = \mathcal{L}_D(\mathbf{w}) + \lambda \, \mathcal{L}_W(\mathbf{w})

dove:

Le due scelte naturali per LW\mathcal{L}_W sono la norma 2 al quadrato dei pesi e la norma 1: corrispondono a due metodi con nomi propri, ridge e lasso.

8.2 Ridge regression#

Ridge regression

Regressione lineare regolarizzata con penalità in norma 2:

L(w)=12n=1N(tnwTϕ(xn))2+λ2w22\mathcal{L}(\mathbf{w}) = \frac{1}{2} \sum_{n=1}^{N} \big( t_n - \mathbf{w}^T \boldsymbol{\phi}(\mathbf{x}_n) \big)^2 + \frac{\lambda}{2} \lVert \mathbf{w} \rVert_2^2

Il punto di forza della ridge è che la loss resta quadratica in w\mathbf{w} (somma di due forme quadratiche), quindi la stessa procedura dell’OLS, gradiente uguale a zero, dà ancora una soluzione in forma chiusa:

w^ridge=(λI+ΦTΦ)1ΦTt\hat{\mathbf{w}}_{ridge} = (\lambda \mathbf{I} + \boldsymbol{\Phi}^T \boldsymbol{\Phi})^{-1} \boldsymbol{\Phi}^T \mathbf{t}

identica a quella dell’OLS a parte il termine λI\lambda \mathbf{I} aggiunto prima dell’inversione. Questo termine porta un bonus non banale: la matrice λI+ΦTΦ\lambda \mathbf{I} + \boldsymbol{\Phi}^T \boldsymbol{\Phi} è sempre invertibile per λ>0\lambda > 0. Infatti ΦTΦ\boldsymbol{\Phi}^T \boldsymbol{\Phi} è semidefinita positiva (autovalori 0\geq 0) e λI\lambda \mathbf{I} è definita positiva, quindi la somma ha tutti gli autovalori λ>0\geq \lambda > 0. La ridge risolve quindi anche il problema delle feature linearmente dipendenti o quasi dipendenti che rende singolare o instabile l’OLS.

L’effetto sul modello si vede bene sull’esempio del polinomio di grado alto: senza regolarizzazione la curva ha picchi selvaggi; introducendo λ\lambda la funzione diventa via via più liscia e i picchi spariscono; aumentando ancora λ\lambda tutte le componenti del vettore dei pesi si contraggono progressivamente verso l’origine.

Ridge su un polinomio di grado 15, al crescere di \lambda. Da sinistra a destra la penalità \lambda cresce. Senza regolarizzazione (\lambda = 0, arancione) il polinomio interpola i dati ma oscilla selvaggiamente agli estremi, con norma dei pesi enorme (\lVert\mathbf{w}\rVert_2 \approx 2.74\cdot10^6). Con un ridge via via maggiore (\lambda = 10^{-9}, poi \lambda = 10^{-6}) la curva torna liscia e segue i dati, e la norma dei pesi crolla (9.32\cdot10^2, poi 6.22\cdot10^1). (Slides del corso, Loiacono.)
I pesi si contraggono al crescere di \lambda. I coefficienti del polinomio di grado 15, dell’ordine di 10^5 senza regolarizzazione, vengono spinti verso lo zero man mano che \lambda aumenta: è la penalità \lambda \lVert \mathbf{w} \rVert_2^2 a contrarli. (Slide del corso, Loiacono.)

In parole semplici: la ridge dice all’ottimizzatore “vai pure vicino ai dati, ma ogni unità di grandezza dei pesi ti costa”. Il risultato è una curva più liscia che rinuncia a inseguire il rumore. In più, il termine λI\lambda \mathbf{I} rende la matrice sempre invertibile: due problemi risolti con una sola aggiunta.

8.3 Lasso#

Lasso

Regressione lineare regolarizzata con penalità in norma 1:

L(w)=12n=1N(tnwTϕ(xn))2+λ2w1\mathcal{L}(\mathbf{w}) = \frac{1}{2} \sum_{n=1}^{N} \big( t_n - \mathbf{w}^T \boldsymbol{\phi}(\mathbf{x}_n) \big)^2 + \frac{\lambda}{2} \lVert \mathbf{w} \rVert_1

dove w1=jwj\lVert \mathbf{w} \rVert_1 = \sum_j |w_j| è la somma dei valori assoluti dei pesi.

Il valore assoluto introduce una non linearità che rompe la forma quadratica: per il lasso non esiste soluzione in forma chiusa. Il problema resta però risolvibile con metodi iterativi in stile gradient descent, e il lasso è molto usato in pratica per una proprietà preziosa: produce soluzioni sparse. Aumentando λ\lambda, nella ridge tutti i pesi si riducono verso zero più o meno alla stessa velocità, e alla fine sono tutti piccoli ma diversi da zero; nel lasso i pesi decrescono a velocità diverse, e per λ\lambda abbastanza grande alcune componenti di w^\hat{\mathbf{w}} diventano esattamente zero.

Questo equivale a una selezione automatica delle feature: partendo da un modello con 15 feature, il lasso può rivelare che solo 5 sono rilevanti, azzerando i pesi delle altre 10. Il modello risultante è più semplice, più interpretabile e più economico da valutare.

8.4 Perché il lasso produce sparsità: la vista per vincoli#

La regolarizzazione si può leggere in modo equivalente come un problema vincolato: minimizzare LD(w)\mathcal{L}_D(\mathbf{w}) soggetto al vincolo LW(w)η\mathcal{L}_W(\mathbf{w}) \leq \eta, cioè

jwjqη\sum_j |w_j|^q \leq \eta

con q=2q = 2 per la ridge e q=1q = 1 per il lasso. Nel piano dei pesi (w1,w2)(w_1, w_2) la RSS ha curve di livello ellittiche centrate sulla soluzione OLS non vincolata; la regione ammissibile del vincolo è un cerchio centrato nell’origine per la ridge e un quadrato ruotato di 45 gradi (un rombo con i vertici sugli assi) per il lasso. La soluzione regolarizzata è il punto in cui la più piccola curva di livello della RSS tocca la regione ammissibile:

Ridge: vincolo in norma 2w1w2ŵ OLSridgecontatto in un punto generico: w1, w2 ≠ 0Lasso: vincolo in norma 1w1w2ŵ OLSlassow1 = 0contatto sul vertice: w1 = 0 (feature spenta)

In parole semplici: la ridge stringe i pesi dentro una bolla rotonda, che non ha punti “speciali”: tutti i pesi si rimpiccioliscono ma restano vivi. Il lasso li stringe dentro un rombo con gli spigoli sugli assi: le ellissi dell’errore finiscono quasi sempre per toccare uno spigolo, e uno spigolo significa un peso azzerato. Ecco perché il lasso spegne le feature inutili.

9. La lettura probabilistica: maximum likelihood#

9.1 Il modello con rumore gaussiano#

Finora l’approccio è stato “diretto”: si sceglie una loss ragionevole e la si minimizza. La prospettiva probabilistica rilegge lo stesso problema modellando esplicitamente l’incertezza nei dati, e questo è interessante non perché porti a soluzioni diverse (spoiler: la soluzione sarà la stessa), ma perché spiega che cosa sta davvero assumendo l’OLS e apre la strada a modelli più sofisticati.

Idea chiave: assumere che i dati siano generati da un modello lineare più un rumore casuale gaussiano; a quel punto ogni scelta dei pesi assegna una probabilità ai dati osservati, e si scelgono i pesi che rendono i dati osservati i più probabili possibile.

L’assunzione generativa è

t=y(x,w)+ϵ=wTϕ(x)+ϵ,ϵN(0,σ2)t = y(\mathbf{x}, \mathbf{w}) + \epsilon = \mathbf{w}^T \boldsymbol{\phi}(\mathbf{x}) + \epsilon, \qquad \epsilon \sim \mathcal{N}(0, \sigma^2)

cioè: la natura calcola il valore “pulito” con un modello lineare e poi lo sporca con un rumore gaussiano a media nulla e varianza σ2\sigma^2. Di conseguenza, per un singolo punto la probabilità di osservare il target tnt_n dato l’input è una gaussiana centrata sulla predizione del modello:

p(tnxn,w,σ2)=N ⁣(tnwTϕ(xn),σ2)p(t_n \mid \mathbf{x}_n, \mathbf{w}, \sigma^2) = \mathcal{N}\!\big( t_n \mid \mathbf{w}^T \boldsymbol{\phi}(\mathbf{x}_n), \, \sigma^2 \big)

la probabilità è massima esattamente sul valore predetto e decresce allontanandosene, con una velocità governata da σ2\sigma^2.

9.2 Likelihood e log-likelihood#

Assumendo i campioni indipendenti e identicamente distribuiti, la probabilità dell’intero dataset è il prodotto delle probabilità dei singoli punti. Questa quantità, vista come funzione dei parametri, si chiama likelihood.

Likelihood

La likelihood è la probabilità di osservare i dati D\mathcal{D} dato un valore dei parametri w\mathbf{w}:

p(tX,w,σ2)=n=1NN ⁣(tnwTϕ(xn),σ2)p(\mathbf{t} \mid \mathbf{X}, \mathbf{w}, \sigma^2) = \prod_{n=1}^{N} \mathcal{N}\!\big( t_n \mid \mathbf{w}^T \boldsymbol{\phi}(\mathbf{x}_n), \, \sigma^2 \big)

Misura “quanto è plausibile” che proprio quei dati siano usciti da un generatore con quei parametri.

La stima di maximum likelihood (Maximum Likelihood, ML) sceglie wML=argmaxwp(tX,w,σ2)\mathbf{w}_{ML} = \arg\max_{\mathbf{w}} p(\mathbf{t} \mid \mathbf{X}, \mathbf{w}, \sigma^2). Massimizzare un prodotto di esponenziali è scomodo; il trucco standard è massimizzare il logaritmo della likelihood, operazione lecita perché il logaritmo è monotono crescente e quindi non sposta il punto di massimo. Il logaritmo trasforma il prodotto in somma, e la densità gaussiana 12πσ2exp((tnwTϕ(xn))22σ2)\frac{1}{\sqrt{2\pi\sigma^2}} \exp\big( -\frac{(t_n - \mathbf{w}^T\boldsymbol{\phi}(\mathbf{x}_n))^2}{2\sigma^2} \big) si semplifica drasticamente:

(w)=lnp(tX,w,σ2)=N2ln(2πσ2)    12σ2n=1N(tnwTϕ(xn))2\ell(\mathbf{w}) = \ln p(\mathbf{t} \mid \mathbf{X}, \mathbf{w}, \sigma^2) = -\frac{N}{2} \ln(2\pi\sigma^2) \; - \; \frac{1}{2\sigma^2} \sum_{n=1}^{N} \big( t_n - \mathbf{w}^T \boldsymbol{\phi}(\mathbf{x}_n) \big)^2

Il primo termine è una costante che non contiene w\mathbf{w} e non influenza l’ottimizzazione; il secondo termine è, a meno di una costante moltiplicativa negativa, esattamente la RSS: gli esponenti delle gaussiane sono i residui al quadrato, e sommandoli si ricompone la somma dei quadrati.

9.3 Maximum likelihood = least squares#

Massimizzare (w)\ell(\mathbf{w}) equivale quindi a minimizzare la RSS: annullando il gradiente si ritrova lo stesso identico problema dell’OLS, con la stessa soluzione:

wML=(ΦTΦ)1ΦTt=w^OLS\mathbf{w}_{ML} = (\boldsymbol{\Phi}^T \boldsymbol{\Phi})^{-1} \boldsymbol{\Phi}^T \mathbf{t} = \hat{\mathbf{w}}_{OLS}

In parole semplici: minimizzare la somma dei quadrati e massimizzare la probabilità dei dati sotto rumore gaussiano sono lo stesso identico calcolo. Quindi l’OLS non è una ricetta arbitraria: è la scelta ottimale se si crede che i dati siano “modello lineare più rumore gaussiano”. Se il rumore vero non fosse gaussiano, la loss quadratica non sarebbe più quella giusta.

I benefici di questa rilettura sono due. Primo, un’interpretazione: usare l’OLS equivale ad assumere implicitamente il modello generativo gaussiano. Secondo, un punto di partenza: dentro un framework probabilistico si può cominciare a ragionare non solo sulla soluzione ottima ma anche sull’incertezza della soluzione, cosa impossibile nell’approccio diretto.

9.4 Proprietà statistiche della stima: il teorema di Gauss-Markov#

La stima ML (cioè OLS) gode di una proprietà di ottimalità classica.

Gauss-Markov

La stima ai least squares di w\mathbf{w} è, tra tutte le stime lineari e non distorte, quella con varianza minima (e quindi con il minor mean squared error (errore quadratico medio) tra le stime lineari non distorte).

Non distorta (unbiased) significa che, in media sui possibili dataset, la stima coincide con i parametri veri del generatore. Attenzione però a non leggere il teorema come “l’OLS è imbattibile”: afferma solo l’ottimalità dentro la classe delle stime lineari non distorte. Più avanti nel corso, con il compromesso bias-varianza, si vedrà che può convenire accettare una stima leggermente distorta (per esempio la ridge) in cambio di una varianza molto più bassa: si rinuncia alla correttezza in media per guadagnare stabilità.

10. Regressione lineare bayesiana#

10.1 L’approccio bayesiano in quattro passi#

La maximum likelihood fornisce un solo numero per ogni peso: il valore ottimo. L’approccio bayesiano fa un salto concettuale: tratta i pesi stessi come variabili aleatorie e ne modella l’intera distribuzione di probabilità.

Idea chiave: non “qual è il miglior w\mathbf{w}?” ma “quanto è plausibile ciascun w\mathbf{w}, alla luce di ciò che sapevo prima e dei dati che ho visto?”. La risposta è una distribuzione, non un punto: e da una distribuzione si estraggono sia predizioni sia barre di incertezza.

Lo schema generale dell’approccio bayesiano è:

  1. Formulare la conoscenza sul mondo in modo probabilistico: si definisce il modello, si identificano i suoi parametri ignoti e si esprime ciò che si assume su di essi prima di vedere i dati tramite una distribuzione a priori (prior).
  2. Osservare i dati.
  3. Calcolare la distribuzione a posteriori dei parametri dati i dati osservati.
  4. Usare la posteriori per: fare predizioni mediando sulla distribuzione; quantificare l’incertezza sui parametri; prendere decisioni minimizzando la loss attesa a posteriori.

Lo strumento che collega prior e dati è il teorema di Bayes:

p(wD)=p(Dw)p(w)p(D)p(\mathbf{w} \mid \mathcal{D}) = \frac{p(\mathcal{D} \mid \mathbf{w}) \, p(\mathbf{w})}{p(\mathcal{D})}

dove ogni fattore ha un nome e un ruolo preciso:

In parole semplici: la formula di Bayes è una macchina per aggiornare opinioni: si parte da un’opinione iniziale sui pesi (prior), la si confronta con i dati (likelihood), e si ottiene un’opinione aggiornata (posteriori). Il denominatore serve solo a far tornare i conti delle probabilità.

nuovi dati osservati Dprior p(w)conoscenza iniziale sui pesilikelihoodp(D | w)posteriori p(w | D)conoscenza aggiornataBayesapprendimento sequenziale: la posteriori diventa il prior per i dati successivi

10.2 Prior coniugato gaussiano e calcolo della posteriori#

Come modellare il prior? In linea di principio con qualunque distribuzione, ma c’è una scelta che rende tutto calcolabile analiticamente: un prior coniugato alla likelihood.

Prior coniugato

Un prior p(w)p(\mathbf{w}) si dice coniugato a una likelihood se la posteriori che risulta dal loro prodotto (normalizzato) appartiene alla stessa famiglia di distribuzioni del prior.

Con likelihood gaussiana, il prior coniugato è una gaussiana: il prodotto di due gaussiane, rinormalizzato, è ancora una gaussiana. Se si scegliesse un prior arbitrario, la posteriori non avrebbe forma analitica e servirebbero metodi numerici. Si pone quindi

p(w)=N(ww0,S0)p(\mathbf{w}) = \mathcal{N}(\mathbf{w} \mid \mathbf{w}_0, \mathbf{S}_0)

con media w0\mathbf{w}_0 (quasi sempre 0\mathbf{0}: senza conoscenza specifica del problema non c’è motivo di preferire pesi positivi o negativi) e matrice di covarianza S0\mathbf{S}_0 che esprime quanto si è incerti sui pesi e quanto li si crede correlati tra loro. Combinando prior e likelihood, la posteriori risulta ancora gaussiana (la derivazione completa è sul Bishop; non è richiesta all’esame, ma vale la pena leggerla per capire cosa succede sotto il cofano):

p(wt,Φ,σ2)=N(wwN,SN)p(\mathbf{w} \mid \mathbf{t}, \boldsymbol{\Phi}, \sigma^2) = \mathcal{N}(\mathbf{w} \mid \mathbf{w}_N, \mathbf{S}_N)

con

wN=SN(S01w0+ΦTtσ2),SN1=S01+ΦTΦσ2\mathbf{w}_N = \mathbf{S}_N \left( \mathbf{S}_0^{-1} \mathbf{w}_0 + \frac{\boldsymbol{\Phi}^T \mathbf{t}}{\sigma^2} \right), \qquad \mathbf{S}_N^{-1} = \mathbf{S}_0^{-1} + \frac{\boldsymbol{\Phi}^T \boldsymbol{\Phi}}{\sigma^2}

La covarianza è scritta per comodità tramite la sua inversa: si legge come “precisione finale = precisione del prior + precisione portata dai dati”. La media wN\mathbf{w}_N mescola la conoscenza a priori (primo addendo) con l’informazione dei dati (secondo addendo, che dipende da input, target e rumore σ2\sigma^2).

Poiché la posteriori è gaussiana, il suo massimo coincide con la sua media: quindi la stima MAP è wN\mathbf{w}_N, che è anche il valore atteso dei pesi dati i dati. Questa coincidenza tra moda e media è un lusso della gaussiana: con prior arbitrari, in generale, non vale.

10.3 Casi particolari: ML e ridge ritrovate#

La formula della posteriori contiene come casi particolari entrambe le soluzioni viste finora.

Prior infinitamente largo. Per modellare “non so nulla sui pesi” si prende w0=0\mathbf{w}_0 = \mathbf{0} e S0\mathbf{S}_0 \to \infty (varianza infinita: ogni vettore di pesi è ugualmente plausibile a priori). Allora S010\mathbf{S}_0^{-1} \to \mathbf{0}, i termini con il prior si cancellano e resta

wN(ΦTΦ)1ΦTt=wML,SNσ2(ΦTΦ)1\mathbf{w}_N \to (\boldsymbol{\Phi}^T \boldsymbol{\Phi})^{-1} \boldsymbol{\Phi}^T \mathbf{t} = \mathbf{w}_{ML}, \qquad \mathbf{S}_N \to \sigma^2 (\boldsymbol{\Phi}^T \boldsymbol{\Phi})^{-1}

Il MAP coincide con la soluzione di maximum likelihood, cioè con l’OLS. Questo completa l’interpretazione: l’OLS è la risposta bayesiana ottima quando si assume rumore gaussiano e nessuna preferenza a priori sui pesi. In più, ora c’è anche la covarianza SN\mathbf{S}_N, cioè una quantificazione dell’incertezza sui pesi: cresce con la varianza del rumore σ2\sigma^2 (più i dati sono rumorosi, meno ci si può fidare delle stime) e dipende dalla struttura degli input tramite (ΦTΦ)1(\boldsymbol{\Phi}^T \boldsymbol{\Phi})^{-1}. In pratica σ2\sigma^2 non è nota e viene stimata dai residui (sezione 11.4); da SN\mathbf{S}_N si ricavano intervalli di confidenza sui singoli pesi e test di significatività.

Prior sferico finito. Si prenda w0=0\mathbf{w}_0 = \mathbf{0} e S0=τ2I\mathbf{S}_0 = \tau^2 \mathbf{I}: covarianza diagonale (nessuna correlazione a priori tra componenti, non avendo motivo di assumerne) e varianza finita τ2\tau^2 uguale per tutte. Questo prior dice: “preferisco vettori di pesi vicini all’origine, e quanto più piccolo è τ2\tau^2 tanto più forte è la preferenza”. Sostituendo nella posteriori, la funzione che il MAP massimizza risulta essere esattamente la loss della ridge regression, con

λ=σ2τ2\lambda = \frac{\sigma^2}{\tau^2}

In parole semplici: la regolarizzazione ridge e il prior gaussiano centrato nell’origine sono la stessa cosa detta in due lingue diverse. Credere a priori che i pesi siano piccoli (varianza τ2\tau^2 piccola) equivale a penalizzarli con λ\lambda grande; permettere a priori pesi enormi (τ2\tau^2 grande) equivale a regolarizzare poco. La formula λ=σ2/τ2\lambda = \sigma^2/\tau^2 è il dizionario di traduzione.

10.4 Apprendimento sequenziale bayesiano: un esempio#

La coniugatezza regala un’altra proprietà preziosa: la posteriori calcolata su un primo blocco di dati può diventare il prior per il blocco successivo, dato che ha la stessa forma funzionale. Non serve mai ripartire da zero: si aggiorna la conoscenza in modo incrementale, punto per punto o a blocchi.

Esempio concreto. I dati sono generati da t(x)=0.3+0.5x+εt(x) = -0.3 + 0.5x + \varepsilon, con xU(1,1)x \sim U(-1, 1) e εN(0,0.04)\varepsilon \sim \mathcal{N}(0, 0.04); il modello è y(x,w)=w0+w1xy(x, \mathbf{w}) = w_0 + w_1 x e il prior è p(w)=N(0,τ2I)p(\mathbf{w}) = \mathcal{N}(\mathbf{0}, \tau^2 \mathbf{I}) con τ2=0.5\tau^2 = 0.5. L’evoluzione della conoscenza:

Apprendimento sequenziale bayesiano. Da zero a venti punti osservati (dall’alto in basso): la posteriori sui pesi (colonna centrale) passa dal prior largo a una campana strettissima attorno ai valori veri, e le rette campionate nello spazio dei dati (colonna destra) si stringono progressivamente attorno alla retta generatrice. (Slide del corso.)

10.5 La distribuzione predittiva#

Tutto questo riguarda i pesi, ma alla fine ciò che interessa è predire il target di un nuovo punto. La distribuzione a posteriori sui pesi, combinata con il modello di rumore, produce la distribuzione predittiva del target per un nuovo input x\mathbf{x}:

p(tx,D)=N ⁣(twNTϕ(x),  σN2(x)),σN2(x)=σ2rumore dei dati+ϕ(x)TSNϕ(x)incertezza sui parametrip(t \mid \mathbf{x}, \mathcal{D}) = \mathcal{N}\!\big( t \mid \mathbf{w}_N^T \boldsymbol{\phi}(\mathbf{x}), \; \sigma_N^2(\mathbf{x}) \big), \qquad \sigma_N^2(\mathbf{x}) = \underbrace{\sigma^2}_{\text{rumore dei dati}} + \underbrace{\boldsymbol{\phi}(\mathbf{x})^T \mathbf{S}_N \, \boldsymbol{\phi}(\mathbf{x})}_{\text{incertezza sui parametri}}

La media è quello che non poteva non essere: la predizione del modello con i pesi medi a posteriori. La varianza si decompone in due contributi:

Visivamente, approssimando una sinusoide con 9 basi gaussiane: con un solo punto osservato la banda di confidenza attorno alla predizione è strettissima vicino a quel punto e larghissima ovunque altrove, e le funzioni campionate dalla posteriori si aprono a ventaglio; con 25 punti la banda si stringe ovunque e le funzioni campionate si addensano attorno alla sinusoide vera.

Distribuzione predittiva bayesiana al crescere dei dati. Sinusoide vera (verde) approssimata con 9 basi gaussiane, con 1, 2, 4 e 25 campioni osservati (in senso di lettura). In ogni coppia, a sinistra la predizione (rosso) con la sua banda di confidenza (rosa): larghissima dove non ci sono dati, si stringe attorno ai punti osservati e, con 25 campioni, aderisce ovunque alla sinusoide. A destra le funzioni campionate dalla posteriori: si aprono a ventaglio nelle regioni inesplorate e si addensano man mano che i dati aumentano. (Slides del corso, Loiacono.)

In parole semplici: il modello bayesiano non dà solo una predizione, dà una predizione con la sua barra di errore, diversa punto per punto: stretta dove ha visto dati, larga dove sta tirando a indovinare. Con l’OLS si ha solo la linea rossa della predizione; con il bayesiano si sa anche quanto fidarsi di ogni suo tratto.

10.6 Sfide e limiti#

L’approccio bayesiano paga la sua eleganza con assunzioni forti. Sul fronte della modellazione, il modello deve dare probabilità ragionevoli a tutte le funzioni plausibili, e il prior non deve né azzerare la probabilità di valori possibili né essere talmente vago da non dire nulla. Sul fronte computazionale, l’integrazione analitica è possibile solo con prior coniugati e modelli semplici: nel caso generale servono approssimazioni (di Laplace, integrazione Monte Carlo, metodi variazionali).

Più in generale, i modelli lineari a basi fisse hanno vantaggi netti: soluzione in forma chiusa, trattamento bayesiano trattabile, capacità di modellare relazioni non lineari con basi opportune. Ma hanno due limiti strutturali: le basi non si adattano ai dati (sono scelte prima e restano quelle), e il numero di basi necessarie esplode con la dimensionalità dell’input, la maledizione della dimensionalità già incontrata. Le tecniche successive del corso, in particolare i metodi kernel e le reti neurali, nascono per aggirare proprio questi limiti.

11. Valutare un modello di regressione#

11.1 La pipeline pratica e la normalizzazione dei dati#

Prima ancora di addestrare il modello, un problema reale richiede alcuni passi preliminari: caricare i dati, ispezionarli qualitativamente, eventualmente selezionare quelli di interesse (spesso con l’aiuto di un esperto di dominio). Seguono i passi di preprocessing:

Per la normalizzazione di una variabile con valori s1,,sNs_1, \dots, s_N ci sono due tecniche standard:

Quale usare dipende dall’algoritmo a valle; nel corso si userà tipicamente lo z-score.

Come banco di prova pratico si usa spesso il dataset Iris: 150 righe, ognuna con quattro variabili continue (lunghezza e larghezza di sepalo e petalo di un fiore) più la specie (setosa, versicolor, virginica, 50 esemplari ciascuna). Una domanda di regressione naturale: si può predire la larghezza del petalo dalla sua lunghezza? Il grafico di dispersione mostra punti ben allineati lungo una retta, quindi un modello lineare è promettente. In Python la regressione si esegue con scikit-learn (oggetto LinearRegression e metodo fit), con statsmodels (metodo OLS), oppure implementando direttamente la formula in forma chiusa.

11.2 Indici di errore: RSS, MSE, RMSE#

I primi indici di qualità derivano direttamente dalla loss:

Questi indici però sono poco informativi in assoluto: sapere che l’errore medio è 0.2 non dice se sia un buon risultato, perché dipende dalla scala e dalla difficoltà del problema. Serve un indice relativo.

11.3 Il coefficiente di determinazione R2R^2#

Idea chiave: confrontare il proprio modello con il modello più stupido possibile, quello che predice sempre lo stesso valore costante; il guadagno rispetto a quel modello dice quanto il proprio modello sta davvero spiegando.

Coefficiente di determinazione R²

R2=1RSSTSS,TSS=n=1N(tntˉ)2R^2 = 1 - \frac{\text{RSS}}{\text{TSS}}, \qquad \text{TSS} = \sum_{n=1}^{N} (t_n - \bar{t})^2

dove tˉ\bar{t} è la media campionaria dei target e la TSS (total sum of squares) è la RSS del miglior modello costante, quello che predice sempre tˉ\bar{t}.

Lettura: se RSS e TSS sono simili, il rapporto vale circa 1 e R20R^2 \approx 0, cioè il modello non fa meglio di una linea orizzontale; se RSS è molto più piccola di TSS, il rapporto va a 0 e R21R^2 \to 1, cioè il modello spiega quasi tutta la variabilità del target.

Alcune proprietà importanti, spesso oggetto di domande d’esame:

Si definiscono inoltre i gradi di libertà del modello di regressione come NMN - M (campioni meno parametri stimati) e una versione “adjusted” dell’R2R^2 che ne tiene conto, penalizzando i modelli con molti parametri; quest’ultima è però poco usata in pratica.

In parole semplici: R2R^2 risponde a “quanto meglio faccio rispetto a chi spara sempre la media?”. Vale 1 se il modello è perfetto, 0 se non aggiunge nulla alla media, negativo se fa addirittura peggio. Ma attenzione: calcolato sugli stessi dati di training, premia anche chi impara a memoria.

11.4 Test statistici sui coefficienti#

L’R2R^2 dà una valutazione globale ma grossolana. Per affermazioni rigorose (“questa variabile serve davvero?”) si costruiscono test d’ipotesi, sotto l’assunzione generativa gaussiana: tn=wTxn+ϵnt_n = \mathbf{w}^T \mathbf{x}_n + \epsilon_n con ϵn\epsilon_n rumore bianco gaussiano N(0,σ2)\mathcal{N}(0, \sigma^2) indipendente per ogni campione. La varianza del rumore si stima in modo non distorto dai residui:

σ^2=RSSNM\hat{\sigma}^2 = \frac{\text{RSS}}{N - M}

Sotto queste ipotesi si può dimostrare (i dettagli sono sul libro di testo) che la quantità

w^jwjσ^vjjtNM\frac{\hat{w}_j - w_j}{\hat{\sigma} \sqrt{v_{jj}}} \sim t_{N-M}

segue una distribuzione t di Student con NMN - M gradi di libertà, dove w^j\hat{w}_j è il coefficiente stimato dai dati, wjw_j quello vero del generatore e vjjv_{jj} è il jj-esimo elemento diagonale di (ΦTΦ)1(\boldsymbol{\Phi}^T\boldsymbol{\Phi})^{-1}. Da qui due test fondamentali.

Tre significati diversi della lettera t

In questa sezione lo stesso simbolo compare con tre ruoli distinti, e confonderli è un classico errore di lettura:

  • tnt_n è il target dell’nn-esimo campione, come nel resto del capitolo;
  • tNMt_{N-M} è la distribuzione t di Student: il pedice conta i gradi di libertà, non i campioni. Non è né un target né un indice;
  • t=w^j/(σ^vjj)t = \hat{w}_j / (\hat{\sigma}\sqrt{v_{jj}}) è la statistica del test, un singolo numero calcolato dai dati.

La chiave di lettura è il simbolo \sim: l’espressione XtNMX \sim t_{N-M} si legge “XX è distribuita come una t di Student con NMN-M gradi di libertà”. Dove compare \sim, la tt è la distribuzione; altrove è un target o la statistica.

Sul perché proprio NMN - M: sono i gradi di libertà residui. Delle NN osservazioni, MM vengono “consumate” per stimare gli MM parametri, e il vettore dei residui è vincolato a vivere nel complemento ortogonale del sottospazio S\mathcal{S} della sezione 4, che ha appunto dimensione NMN - M. È lo stesso motivo per cui σ^2\hat{\sigma}^2 divide per NMN - M e non per NN: è ciò che rende la stima non distorta. Se MNM \to N i gradi di libertà si annullano e i test perdono significato; per NMN - M grande, invece, la t converge alla gaussiana standard.

Test t su un singolo coefficiente. Ci si chiede se la variabile jj sia statisticamente significativa. Ipotesi nulla H0:wj=0H_0: w_j = 0 (la variabile non conta; come sempre nei test, l’ipotesi nulla è quella che si vorrebbe rigettare) contro l’alternativa H1:wj0H_1: w_j \neq 0. Sotto H0H_0 la statistica diventa

t=w^jσ^vjjt = \frac{\hat{w}_j}{\hat{\sigma} \sqrt{v_{jj}}}

interamente calcolabile dai dati. L’intuizione: se il valore stimato w^j\hat{w}_j è molto lontano da zero rispetto alla sua incertezza, c’è evidenza che il coefficiente vero sia diverso da zero. Si fissa un livello di significatività α\alpha, si ricava dalla distribuzione t la soglia corrispondente, e si rigetta H0H_0 se t|t| supera la soglia. Equivalentemente si guarda il p-value: la minima significatività alla quale si rigetterebbe l’ipotesi nulla; un p-value vicino a zero significa rigettare H0H_0 con probabilità di errore piccolissima, cioè forte evidenza che il coefficiente sia significativo.

Test F sulla regressione complessiva. Ci si chiede se il modello nel suo insieme sia meglio di una costante. Ipotesi nulla H0:w1=w2==wM1=0H_0: w_1 = w_2 = \dots = w_{M-1} = 0 (tutti i pesi tranne il bias sono nulli) contro l’esistenza di almeno un peso non nullo. È la versione “di principio” del confronto già fatto con l’R2R^2. La statistica è

F=(TSSRSS)/(M1)RSS/(NM)FM1,NMF = \frac{(\text{TSS} - \text{RSS})/(M - 1)}{\text{RSS}/(N - M)} \sim F_{M-1, \, N-M}

che sotto le assunzioni segue una distribuzione di Fisher con parametri M1M-1 e NMN-M. Si rigetta H0H_0 quando FF è sufficientemente grande: un FF grande significa che la differenza tra TSS e RSS è grande, cioè che il modello ha una RSS molto più piccola del modello costante, quindi c’è evidenza che il modello serva davvero. La forma della statistica è, non a caso, imparentata con l’R2R^2.

In parole semplici: il test t chiede, variabile per variabile, “questo coefficiente potrebbe essere zero e io sto vedendo solo rumore?”; il test F chiede, per il modello intero, “tutto questo modello potrebbe essere inutile rispetto a una semplice media?”. In entrambi i casi, statistica grande e p-value piccolo significano “no, l’effetto è reale”.

11.5 Leggere l’output di una regressione#

All’esame può essere chiesto di interpretare il tabulato prodotto da una libreria (per esempio statsmodels su Iris, predicendo la larghezza del petalo dalla lunghezza, con N=150N = 150 osservazioni). Gli elementi da saper leggere:

Attenzione a un dettaglio pratico: alcune librerie di default non includono il termine costante, che va aggiunto esplicitamente se lo si vuole nel modello.

12. Esercizi d’esame svolti#

12.1 Riconoscere gli ingredienti di un problema#

Traccia. È data la relazione S=f(PV,R,N)S = f(PV, R, N), dove SS è il ricavo dalle vendite e PVPV, RR, NN sono le somme spese in pubblicità rispettivamente in TV, radio e giornali. Identificare: la variabile di risposta, le feature, il modello; dire che tipo di problema si sta cercando di risolvere.

Svolgimento. La risposta (detta anche target o output) è l’uscita del modello: SS. Le variabili indipendenti (dette anche feature o input) sono gli ingressi: PVPV, RR e NN; “feature” e “variabili” sono due nomi per la stessa cosa. Il modello è la mappa dagli input all’output, cioè la funzione ff.

Per il tipo di problema conviene ripassare la tassonomia. Si è nell’apprendimento supervisionato perché ci sono variabili di input e un target. Dentro il supervisionato:

Qui il target SS è un ricavo, cioè una variabile continua: si tratta di regressione. La giustificazione da scrivere all’esame è esattamente questa: c’è un target, quindi supervisionato; il target è continuo, quindi regressione.

12.2 Feature linearmente dipendenti: input xx e 2x2x#

Traccia. Si consideri una regressione lineare con input xx, target tt e parametro ottimo θ\theta^*. Che cosa succede se si usa come input la coppia di variabili (x,2x)(x, 2x)? Che cosa ci si aspetta sull’incertezza dei parametri? Come si può risolvere il problema? Che cosa succede invece con la coppia (x,x2)(x, x^2)?

Svolgimento. Il nuovo modello ha due parametri:

t^=θ1x+θ2(2x)=(θ1+2θ2)x\hat{t} = \theta_1 x + \theta_2 (2x) = (\theta_1 + 2\theta_2)\, x

Il modello dipende dai parametri solo attraverso la combinazione θ1+2θ2\theta_1 + 2\theta_2. Se θ\theta^* era il parametro ottimo del problema originale, allora ogni coppia (θ1,θ2)(\theta_1, \theta_2) che soddisfa

θ1+2θ2=θ\theta_1 + 2\theta_2 = \theta^*

è una soluzione ottima: le soluzioni sono infinite (un’intera retta nello spazio dei parametri).

Lo stesso fatto si vede dall’algebra dei least squares. La matrice di design è

X=(x12x1x22x2xN2xN)\mathbf{X} = \begin{pmatrix} x_1 & 2x_1 \\ x_2 & 2x_2 \\ \vdots & \vdots \\ x_N & 2x_N \end{pmatrix}

La seconda colonna è il doppio della prima, quindi X\mathbf{X} ha rango 1. Il rango di un prodotto non supera il minimo dei ranghi dei fattori, quindi la matrice 2×22 \times 2 XTX\mathbf{X}^T\mathbf{X} ha anch’essa rango al più 1: è singolare e non si può invertire. La formula OLS (XTX)1XTt(\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{t} non è applicabile, ed è esattamente il sintomo algebrico dell’esistenza di infinite soluzioni.

Sull’incertezza dei parametri: con infinite soluzioni indistinguibili dai dati, l’incertezza sui singoli parametri è illimitata; formalmente, la covarianza della stima coinvolge (XTX)1(\mathbf{X}^T\mathbf{X})^{-1} che non esiste (varianze che divergono).

Rimedi, entrambi validi all’esame:

  1. Rimuovere le colonne linearmente dipendenti, finché la matrice di design torna a rango pieno: qui basta tenere solo xx.
  2. Ridge regression, se non si vuole toccare il design: si minimizza RSS più λθ22\lambda \lVert \boldsymbol{\theta} \rVert_2^2 e la soluzione diventa (λI+XTX)1XTt(\lambda \mathbf{I} + \mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{t}. La matrice da invertire è la somma di XTX\mathbf{X}^T\mathbf{X}, semidefinita positiva (autovalori 0\geq 0), e λI\lambda\mathbf{I}, definita positiva: tutti gli autovalori della somma sono λ>0\geq \lambda > 0, quindi la matrice è sempre invertibile per ogni λ>0\lambda > 0 e il problema torna ad avere soluzione unica.

Ultimo quesito: con input (x,x2)(x, x^2) il problema non si ripresenta. x2x^2 è una trasformazione non lineare di xx: le colonne (x1,,xN)(x_1, \dots, x_N) e (x12,,xN2)(x_1^2, \dots, x_N^2) non sono in generale linearmente dipendenti, la matrice di design ha rango pieno e XTX\mathbf{X}^T\mathbf{X} è invertibile. La dipendenza che rompe l’OLS è solo quella lineare.

12.3 Interpretare il coefficiente di determinazione#

Traccia. Su un dataset con due input x1x_1, x2x_2 e output tt si addestrano due modelli: M1M_1, il modello costante t^=w0\hat{t} = w_0, e M2M_2, il modello lineare completo t^=w0+w1x1+w2x2\hat{t} = w_0 + w_1 x_1 + w_2 x_2. I coefficienti di determinazione risultano R12=0R_1^2 = 0 e R22=0.95R_2^2 = 0.95. Dire se le seguenti affermazioni sono vere o false, giustificando:

  1. il valore alto di R22R_2^2 indica che esiste una forte relazione tra x1x_1 e tt;
  2. il valore alto di R22R_2^2 indica che esiste una forte relazione tra x2x_2 e tt;
  3. sapendo inoltre che il modello M3:t^=w0+w1x1M_3: \hat{t} = w_0 + w_1 x_1 ha R2=0.9R^2 = 0.9, come cambiano le risposte?
  4. M2M_2 non fornisce risultati migliori di M1M_1: vero o falso?

Svolgimento.

Osservazione preliminare sul valore R12R_1^2. Se la traccia riportasse per il modello costante un R2R^2 come 0.05, sarebbe un errore: il miglior modello costante è la media dei target, e per costruzione ha R2=0R^2 = 0 (RSS = TSS); qualunque altra costante fa peggio della media e produce R2R^2 negativo (RSS > TSS). Quindi per un modello costante R2R^2 può essere solo 0 o negativo, mai un piccolo valore positivo.

Affermazione 1: falsa. R22=0.95R_2^2 = 0.95 vicino a 1 dice solo che il modello completo è molto migliore del modello costante. Ma il merito potrebbe essere interamente di x2x_2: tutta l’informazione che rende M2M_2 migliore della costante potrebbe venire dall’altra variabile, e x1x_1 potrebbe essere irrilevante. Regola generale: non si possono trarre conclusioni su una singola variabile dall’R2R^2 di un modello che ne contiene altre. (Se M2M_2 avesse contenuto solo x1x_1, allora sì: l’unica differenza rispetto alla costante sarebbe stata la presenza di x1x_1, e l’R2R^2 alto sarebbe stato attribuibile a lei.)

Affermazione 2: falsa, per lo stesso identico argomento a ruoli scambiati: l’R2R^2 alto potrebbe essere dovuto a x1x_1.

Affermazione 3. Il modello M3M_3 contiene solo x1x_1 e ha R2=0.9R^2 = 0.9: qui la differenza rispetto al modello costante è la sola presenza di x1x_1, quindi si può concludere che esiste una relazione forte tra x1x_1 e tt: l’affermazione 1, riferita a questa nuova evidenza, diventa sostenibile. Per x2x_2: aggiungendola al modello, l’R2R^2 passa da 0.9 a 0.95; poiché aumenta, x2x_2 porta qualche informazione aggiuntiva sul target (parlare di relazione “forte” sarebbe eccessivo: l’incremento è di 0.05). Due precisazioni utili:

Affermazione 4: falsa. M2M_2 ha R2R^2 maggiore di M1M_1, quindi, almeno guardando l’R2R^2, M2M_2 è migliore. Con una cautela finale importante: tutti questi R2R^2 sono calcolati sugli stessi dati usati per l’addestramento. Su dati di training l’R2R^2 si può gonfiare a piacere aggiungendo variabili, quindi la valutazione onesta della qualità di un modello richiede dati freschi, indipendenti dal training set: il tema (validazione e stima dell’errore di generalizzazione) sarà sviluppato più avanti nel corso.

Glossario#

Termine Definizione
Regressione Problema supervisionato in cui si apprende un’approssimazione di una funzione ignota che mappa input in un output continuo.
Parametro di bias (w0w_0) Termine costante del modello lineare, non moltiplicato da alcuna variabile; consente alla funzione di non passare per l’origine.
Residuo Errore εn=tny(xn,w)\varepsilon_n = t_n - y(\mathbf{x}_n, \mathbf{w}) commesso dal modello sul singolo campione.
RSS / SSE Somma dei quadrati dei residui; la loss function standard della regressione lineare.
Funzione base Trasformazione (anche non lineare) ϕj(x)\phi_j(\mathbf{x}) dell’input che genera una nuova feature; il modello resta lineare nei pesi.
Feature space Spazio degli input trasformati dalle funzioni base, nel quale il modello è lineare.
Matrice di design (Φ\boldsymbol{\Phi}) Matrice N×MN \times M con una riga per campione e una colonna per feature.
OLS (ordinary least squares (OLS)) Soluzione in forma chiusa w^=(ΦTΦ)1ΦTt\hat{\mathbf{w}} = (\boldsymbol{\Phi}^T\boldsymbol{\Phi})^{-1}\boldsymbol{\Phi}^T\mathbf{t} che minimizza la RSS.
Equazioni normali Il sistema ΦTΦw=ΦTt\boldsymbol{\Phi}^T\boldsymbol{\Phi}\mathbf{w} = \boldsymbol{\Phi}^T\mathbf{t} ottenuto annullando il gradiente della RSS.
Hat matrix (H\mathbf{H}) Matrice Φ(ΦTΦ)1ΦT\boldsymbol{\Phi}(\boldsymbol{\Phi}^T\boldsymbol{\Phi})^{-1}\boldsymbol{\Phi}^T che proietta ortogonalmente il vettore dei target sul sottospazio generato dalle feature.
Batch / mini-batch gradient descent Batch: ogni passo usa il gradiente su tutti gli NN campioni, w(k+1)=w(k)+α(k)ΦT(tΦw(k))\mathbf{w}^{(k+1)} = \mathbf{w}^{(k)} + \alpha^{(k)}\boldsymbol{\Phi}^T(\mathbf{t} - \boldsymbol{\Phi}\mathbf{w}^{(k)}); mini-batch: su un sottoinsieme per volta. Differiscono dalla SGD solo per l’ampiezza della sommatoria.
SGD / LMS Gradient descent stocastica; per la loss quadratica prende il nome di Least Mean Squares: aggiorna i pesi un campione alla volta.
Learning rate (α\alpha) Ampiezza del passo di aggiornamento nei metodi iterativi; deve decrescere nel tempo per garantire la convergenza.
Underfitting Modello troppo semplice per catturare la relazione input-target; errore alto già sul training set.
Overfitting Modello che si adatta al rumore del training set perdendo capacità di generalizzazione; sintomo tipico: pesi molto grandi.
Regolarizzazione Aggiunta alla loss di un termine λLW(w)\lambda \mathcal{L}_W(\mathbf{w}) che penalizza pesi grandi per limitare l’overfitting.
Ridge regression Regolarizzazione in norma 2; soluzione in forma chiusa (λI+ΦTΦ)1ΦTt(\lambda\mathbf{I} + \boldsymbol{\Phi}^T\boldsymbol{\Phi})^{-1}\boldsymbol{\Phi}^T\mathbf{t}, con matrice sempre invertibile.
Lasso Regolarizzazione in norma 1; niente forma chiusa, ma produce soluzioni sparse (selezione automatica delle feature).
Likelihood Probabilità dei dati osservati in funzione dei parametri, p(Dw)p(\mathcal{D} \mid \mathbf{w}).
Maximum likelihood (ML) Stima dei parametri che massimizza la likelihood; con rumore gaussiano coincide con l’OLS.
Teorema di Gauss-Markov La stima OLS/ML ha varianza minima tra tutte le stime lineari non distorte.
Prior Distribuzione di probabilità sui parametri che codifica la conoscenza prima di osservare i dati.
Prior coniugato Prior tale che la posteriori appartiene alla sua stessa famiglia di distribuzioni; per likelihood gaussiana è la gaussiana.
Posteriori Distribuzione sui parametri dopo aver osservato i dati, ottenuta via teorema di Bayes.
MAP (massimo a posteriori) Valore dei parametri che massimizza la posteriori; con posteriori gaussiana coincide con la sua media.
Distribuzione predittiva Distribuzione del target per un nuovo input, con varianza pari a rumore dei dati più incertezza sui parametri.
Maledizione della dimensionalità Crescita esponenziale del numero di feature/basi necessarie al crescere della dimensione dell’input.
Z-score Normalizzazione che porta i dati a media 0 e deviazione standard 1.
Min-max scaling Normalizzazione che porta i dati nell’intervallo [0,1][0, 1].
MSE / RMSE Mean squared error (RSS/NN) e sua radice quadrata, nella stessa unità del target.
TSS Total sum of squares: RSS del miglior modello costante (la media dei target).
R2R^2 Coefficiente di determinazione, 1RSS/TSS1 - \text{RSS}/\text{TSS}: misura il miglioramento rispetto al modello costante.
Gradi di libertà NMN - M: numero di campioni meno numero di parametri stimati.
Notazione tt Tre usi distinti: tnt_n = target del campione nn; tNMt_{N-M} = distribuzione t di Student con NMN-M gradi di libertà (il pedice sono i gradi di libertà); t=w^j/(σ^vjj)t = \hat{w}_j/(\hat{\sigma}\sqrt{v_{jj}}) = statistica del test. Il simbolo \sim segnala la distribuzione.
Test t (singolo coefficiente) Test con ipotesi nulla wj=0w_j = 0; statistica w^j/(σ^vjj)tNM\hat{w}_j / (\hat{\sigma}\sqrt{v_{jj}}) \sim t_{N-M}.
Test F Test con ipotesi nulla “tutti i pesi tranne il bias nulli”; statistica (TSSRSS)/(M1)RSS/(NM)FM1,NM\frac{(\text{TSS}-\text{RSS})/(M-1)}{\text{RSS}/(N-M)} \sim F_{M-1,N-M}.
p-value Minima significatività alla quale si rigetta l’ipotesi nulla; vicino a zero indica forte evidenza contro l’ipotesi nulla.

Dispensa Machine Learning · Politecnico di Milano